Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
o5t6x7pgljbm
/
public_html
/
admin
/
app
/
V2
/
Repositories
/
Filename :
ProductWishlistRepository.php
back
Copy
<?php namespace App\V2\Repositories; use App\Models\Product; use App\Models\ProductPendingWishlist; use App\Models\ProductWishlist; use App\V2\Dtos\BaseDTO; use App\V2\Dtos\FilterRewardDTO; use App\V2\Dtos\SearchDTO; use App\V2\Dtos\WishlistFilterDTO; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; class ProductWishlistRepository extends BaseRepository { public function getSavedProductsByUserIdAndProductIds($user_id, $product_ids){ $productWishlistArr = ProductWishlist::where('user_id', $user_id) ->whereIn('product_id', $product_ids) ->get(); return $productWishlistArr; } public function getSavedProductsForUserAndGroup(FilterRewardDTO $filterDto){ $queryBuilder = Product::query()->select('products.*', 'product_wishlist.product_wishlist_id'); $queryBuilder->join('product_wishlist', function ($join) use ($filterDto) { $join->on('product_wishlist.product_id', '=', 'products.product_id') ->where('product_wishlist.user_id', '=', $filterDto->getCurrentUserId()); }); $queryBuilder->where('product_wishlist.group_id', $filterDto->getCurrentGroupId()); // ->orWhere(function($query){ // $query->whereNull('products.group_id') // ->where('products.product_type', 'GLOBAL'); // }) // ->orWhere(function($query){ // $query->where('products.group_id', -1) // ->where('products.product_type', 'GLOBAL'); // }); if($filterDto->getDueByLessThan() != null) { $due_by_date = $filterDto->getDueByLessThan(); $queryBuilder->where(function($query) use($due_by_date){ $query->where('products'. '.expires_on', '<=', DB::raw("'$due_by_date'")); $query->orWhereNull('products'. '.expires_on'); }); } if($filterDto->getDueByGraterThan() != null) { $due_by_date = $filterDto->getDueByGraterThan(); $queryBuilder->where(function($query) use($due_by_date){ $query->where('products'. '.expires_on', '>=', DB::raw("'$due_by_date'")); $query->orWhereNull('products'. '.expires_on'); }); } //Sorting and ordering $order_by_column = 'product_id'; $order = 'DESC'; if($filterDto->getOrder() != null){ $order = $filterDto->getOrder(); } if($filterDto->getOrderByColumn() != null){ $order_by_column = $filterDto->getOrderByColumn(); } $queryBuilder->orderBy($order_by_column, $order); // Log::debug("Query For product wishlist: ". $queryBuilder->toSql()); // Log::debug("Values for Sql:" . print_r($queryBuilder->getBindings(), true)); $savedProducts = $queryBuilder->get(); return $savedProducts; } public function getWishlistForUserAndGroup(WishlistFilterDTO $filter){ $queryBuilder = ProductPendingWishlist::query(); $queryBuilder->where('user_id', $filter->getCurrentUserId()); $queryBuilder->where('group_id', $filter->getCurrentGroupId()); if($filter->getWishIds() != null){ $queryBuilder->whereIn('product_wished_id', $filter->getWishIds()); } return $queryBuilder->get(); } } ?>